#ifndef LEPTJSON_H__
#define LEPTJSON_H__

typedef enum { 
    LEPT_NULL, LEPT_FALSE, LEPT_TRUE, LEPT_NUMBER, LEPT_STRING, LEPT_ARRAY, LEPT_OBJECT 
} lept_type;

// 实现 null, true 和 false 的解析
typedef struct {
    lept_type type;
}lept_value;


// 返回值是以下这些枚举值
enum {
    LEPT_PARSE_OK = 0,
    LEPT_PARSE_EXPECT_VALUE,
    LEPT_PARSE_INVALID_VALUE,
    LEPT_PARSE_ROOT_NOT_SINGULAR
};

// 需要两个API函数

// 解析 JSON，传入的 JSON 文本是一个 C 字符串（空结尾字符串／null-terminated string）
// 由于我们不应该改动这个输入字符串，所以使用 const char* 类型。
int lept_parse(lept_value* v, const char* json);

// 一个访问结果的函数，就是获取其类型
lept_type lept_get_type(const lept_value* v);

#endif /* LEPTJSON_H__ */
